#ifndef JOINTCHART_H
#define JOINTCHART_H

#include "yslabel.h"

#include <QWidget>
#include <QtCharts>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QVector>
#include <QString>
#include <QColor>
#include <QLabel>
#include <QTimer>
#include <QResizeEvent>

QT_CHARTS_USE_NAMESPACE

struct LineConfig {
    QString name;      // 折线名称
    QColor color;      // 折线颜色
    bool visible;      // 是否可见
    LineConfig(const QString& n = "", const QColor& c = Qt::white, bool v = true) 
        : name(n), color(c), visible(v) {}
};

class YSChartView : public QWidget
{
    Q_OBJECT

public:
    explicit YSChartView(QWidget *parent = nullptr);
    ~YSChartView();

    // 初始化折线配置
    void initializeLines(const QVector<LineConfig>& configs);
    // 更新单个折线数据
    void updateLineData(int lineIndex, double value);
    // 批量更新所有折线数据
    void updateAllLines(const QVector<float>& values);
    // 清除所有数据
    void clearData();
    // 设置显示范围
    void setRange(double yMin, double yMax);
    // 设置数据点数量上限
    void setMaxPoints(int points);
    // 设置图表大小
    void adjustSizeByScreen();
    void setBaseSize(int width, int height);
    // 设置图表标题
    void setChartTitle(const QString& title);
    // 设置标题颜色
    void setTitleColor(const QColor& color);
    // 设置折线可见性
    void setLineVisible(int index, bool visible);
    bool isLineVisible(int index) const;
    // 获取折线数量
    int lineCount() const { return jointSeries.size(); }
    // 更新折线配置
    void updateLineConfig(int index, const LineConfig& config);
    void setLegendVisible(bool visible);
    float getMaxRange();
    float getMinRange();

private:
    bool m_bFirst=true;
    QChartView *chartView;
    QChart *chart;
    QVector<QLineSeries*> jointSeries;
    QValueAxis *axisX;
    QValueAxis *axisY;
    
    int maxPoints;
    int currentIndex;
    int baseWidth;
    int baseHeight;
    
    YSLabel *titleLabel=nullptr;
    
    void setupChart();
    void initializeSeries(const QVector<LineConfig>& configs);
    void updateTitleStyle();
    void clearSeries();
    
protected:
    virtual void resizeEvent(QResizeEvent* event) override;
};

#endif // JOINTCHART_H 
